﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo12
{
    class Program
    {
        static Hashtable ha = new Hashtable();
        static List<Student> stus = new List<Student>();
        static void Main(string[] args)
        {
            Student stu = new Student(15, "张三", 18);
            stus.Add(stu);
            stu.stuInfo();

            load();

        }

        public static void load()
        {
            Console.WriteLine("请选择：1、添加学生信息。2、查询学生信息。");
            int a = int.Parse(Console.ReadLine());
            switch (a)
            {
                case 1:
                    Add();
                    break;

                case 2:
                    Select();
                    break;
                default:
                    Console.WriteLine("没有这个选项");
                    break;
            }
        }
        public static void Add() {
            Console.WriteLine("请输入学生的学号:");
            int stuNum = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入学生姓名:");
            string stuName = Console.ReadLine();
            Console.WriteLine("请输入学生年龄:");
            int stuAge = int.Parse(Console.ReadLine());
            Student stu = new Student(stuNum,stuName,stuAge);
            if (ha.Contains(stu.no))
            {
                Console.WriteLine("学号重复，不能添加");
                Add();
            }
            else
            {
                ha.Add(stu.no,stu);
                stus.Add(stu);
                Console.WriteLine("是否继续添加(Y/N)");
                char key = char.Parse(Console.ReadLine());
                if (key == ('n' | 'N'))
                {
                    load();
                }
                else if (key == ('y' | 'Y'))
                {
                    Add();
                }
                else
                {
                    Console.WriteLine("输入出错自动返回上一级。");
                    load();
                }
            }
        }
        public static void Select() {
            Console.WriteLine("1、查询所有（按学号排序）2、查询所有（按姓名排序），3、查询所有（按年龄排序）4、按学号查询（查没有，则打印查无此学生）5、退出");
            int a = int.Parse(Console.ReadLine());
            switch (a)
            {
                case 1:
                    stus.Sort(new NOSort());
                    foreach (Student item in stus)
                    {
                        Console.WriteLine(item);
                    }
                    break;

                case 2:
                    stus.Sort(new NameSort());
                    foreach (Student item in stus)
                    {
                        Console.WriteLine(item);
                    }
                    break;

                case 3:
                    stus.Sort(new AgeSort());
                    foreach (Student item in stus)
                    {
                        Console.WriteLine(item);
                    }
                    break;

                case 4:
                    Console.WriteLine("请输入学号：");
                    int NO = int.Parse(Console.ReadLine());
                    if (ha.Contains(NO))
                    {
                        Console.WriteLine(ha[NO]);
                    }
                    else
                    {
                        Console.WriteLine("没有此学号！");
                    }
                    break;

                case 5:
                    Environment.Exit(0);
                    break;
                default:
                    Console.WriteLine("没有这个选项，请重新输入！");
                    load();
                    break;
            }
        }
       
    }
}
